package main

import "fmt"

func main() {
	//利用copy 拷贝切片
	slice := []int32{1, 2, 3}
	slice2 := make([]int32, 5)
	copy(slice2, slice)
	fmt.Println(slice)  // 1 2 3
	fmt.Println(slice2) // 1 2 3 0 0 等于说最后2个保持0，前面的被覆盖

	//1.注意slice2和slice内存空间无关
	slice2[0] = 1000
	fmt.Println(slice)  // 1 2 3
	fmt.Println(slice2) // 1000 2 3 0 0 等于说最后2个保持0，前面的被覆盖

	//2.copy的目标切片可以小于源切片
	slice3 := make([]int32, 1)
	copy(slice3, slice)
	fmt.Println(slice)  // 1 2 3
	fmt.Println(slice3) // 1
}
